package com.example.demo.aiInterface;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * AI助手工厂类
 * 根据会话类型返回对应的AI助手实现类
 * 方便后续扩展新的AI助手类型
 */
@Component
public class AssistantFactory {

    private static final Logger logger = LoggerFactory.getLogger(AssistantFactory.class);

    @Autowired
    private ChatAssistantImpl chatAssistant;

    @Autowired
    private JavaProgrammingAssistantImpl javaProgrammingAssistant;

    /**
     * 根据会话类型获取对应的AI助手实现
     *
     * @param sessionType 会话类型: 0=通用助手(默认), 1=Java编程助手
     * @return 对应的AI助手实现类
     */
    public BaseAssistantImpl getAssistant(Integer sessionType) {
        if (sessionType == null) {
            logger.info("会话类型为空，使用默认的通用助手");
            return chatAssistant;
        }

        return switch (sessionType) {
            case 0 -> {
                logger.debug("使用通用助手");
                yield chatAssistant;
            }
            case 1 -> {
                logger.debug("使用Java编程助手");
                yield javaProgrammingAssistant;
            }
            // 扩展点: 添加新的AI助手类型
            // case 2:
            //     logger.debug("使用英语学习助手");
            //     return englishAssistant;
            // case 3:
            //     logger.debug("使用股票分析助手");
            //     return stockAssistant;
            default -> {
                logger.warn("未知的会话类型: {}，使用默认的通用助手", sessionType);
                yield chatAssistant;
            }
        };
    }
} 